package cn.assumejson.springframework.beans.factory.config;

import cn.assumejson.springframework.beans.PropertyValues;

/**
 * Bean定义
 * 定义Bean的类型
 * 属性等
 *
 * @Author Mr. Li
 * @Date 2021/11/29 22:46
 * @Version 1.0
 */
public interface BeanDefinition {

    /**
     * Bean默认的scope 是单例的。
     */
    String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;

    String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;

    void setBeanClassName(String beanClassName);

    String getBeanClassName();

    Class<?> getBeanClass();

    void setScope(String scope);

    String getScope();

    void setLazyInit(boolean lazyInit);

    boolean isLazyInit();

    Object getBean();

    PropertyValues getPropertyValues();

    boolean isSingleton();

}
